/**
 * 文件名称:  DictServiceImpl.java
 * 文件序号:  序号
 * 内容描述:  文件简单描述，多行换行书写
 * 版权声明:  山东鸿蝶信息技术有限公司
 * 创建用户:  zhangkai
 * 创建日期:  2017/1/16 08:24
 * 修改用户:  无
 * 修改日期:  无
 * 修改说明:  无
 * 文件版本:  V1.0
 * 文件路径:
 */

package com.hongdee.base.brand.service.impl;


import com.hongdee.base.brand.dao.IBrandHisDao;
import com.hongdee.base.brand.entity.TBcBrandHis;
import com.hongdee.base.brand.service.IBrandHisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 名  称: BrandServiceImpl
 * 类  型: class
 * 描  述:
 * 路  径:com.hongdee.base.brand.service.impl
 * 作  者:zhangkai
 * 日  期:2017/1/16 08:24
 */
@Service
public class BrandHisServiceImpl implements IBrandHisService {
    @Autowired
    private IBrandHisDao brandHisDao;
    //品牌变更历史表名称
    private String tableName = "T_BC_BRAND_HIS";


    /**
     * 方法名称: page
     * 方法描述: 分页查询品牌变更历史
     * 参数名称: String start 起始行数
     * 参数名称: String limit 分页大小
     * 参数名称: String oId 组织 ID
     * 参数名称: String brandCode 品牌编码
     * 返回内容: Map
     * 异常说明: Exception
     * 创建用户:张国凯
     * 创建时间:
     * 修改用户:术洪超
     * 修改时间:2017/2/8
     * 修改内容:注释内容
     */
    @Override
    public Map page(String start, String limit, String oId, String brandCode) throws Exception {

        String sql = "select bs.*,o.o_name from " + tableName + " bs left join t_bc_organ o on bs.o_id = o.id where 1 = 1 ";
        //定义参数，接收实际传递的参数
        List<Object> params = new ArrayList();
        //判断参数是否为空
        if (!StringUtils.isEmpty(oId)) {
            sql += " and o_id = ? ";
            params.add(oId);
        }
        //通过变更后经营品牌 变更前经营品牌 查询
        if (!StringUtils.isEmpty(brandCode)) {
            sql += " and (b_code = ? or pre_code = ? )";
            params.add(brandCode);
            params.add(brandCode);
        }
        return this.brandHisDao.page(sql, params.toArray(), start, limit);
    }

    /**
     * @param brandHis 要保存的变更历史记录实体
     * @return Map
     * @throws Exception
     * @desc 保存添加或者修改的实体内容，通过主键判断
     * @author 张国凯
     */
    @Override
    public TBcBrandHis saveOrUpdate(TBcBrandHis brandHis) throws Exception {

        //此接口只提供历史记录的记录功能，只有增加，无修改
        //置空 ID
        brandHis.setId(null);

        this.brandHisDao.saveOrUpdate(brandHis);
        //变更组织机构的经营品牌
        String hql = "update TBcOrgan set o_car_brand = :brand where id = :id";
        Map param = new HashMap();
        param.put("brand", brandHis.getbCode());
        param.put("id", brandHis.getoId());
        this.brandHisDao.update(hql, param);

        // 不同类型的操作，缺少事务相关的处理
        // 以此记录
        return brandHis;
    }

}
